package com.vhans.db.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.vhans.core.domain.BTag;
import com.vhans.db.model.dto.ConditionDTO;
import com.vhans.db.model.dto.tag.TagDTO;
import com.vhans.db.model.vo.quiz.QuizConditionList;
import com.vhans.db.model.vo.record.RecordConditionList;
import com.vhans.db.model.vo.tag.TagQuizVO;
import com.vhans.db.model.vo.tag.TagRecordVO;
import com.vhans.db.model.vo.tag.TagOptionVO;
import com.vhans.db.model.vo.tag.TagVO;

import java.util.List;

/**
 * 标签业务接口
 *
 * @author vhans
 **/
public interface IBTagService extends IService<BTag> {

    /**
     * 查看标签列表
     *
     * @param condition 条件
     * @return 标签列表
     */
    List<TagVO> listTagVO(ConditionDTO condition);

    /**
     * 添加标签
     *
     * @param tag 标签
     */
    void addTag(TagDTO tag);

    /**
     * 删除标签
     *
     * @param tagIdList 标签id集合
     */
    void deleteTag(List<Integer> tagIdList);

    /**
     * 修改标签
     *
     * @param tag 标签
     */
    void updateTag(TagDTO tag);

    /**
     * 搜索标签选项
     *
     * @return 标签列表
     */
    List<TagOptionVO> listTagOption();

    /**
     * 搜索记录标签选项
     *
     * @return 标签列表
     */
    List<TagOptionVO> listRTagOption();

    /**
     * 搜索题目标签选项
     *
     * @return 标签列表
     */
    List<TagOptionVO> listQTagOption();

    /**
     * 查看记录标签列表
     *
     * @return 标签列表
     */
    List<TagRecordVO> listTagRVO();

    /**
     * 查看题目标签列表
     *
     * @return 标签列表
     */
    List<TagQuizVO> listTagQVO();

    /**
     * 查看标签下的记录
     *
     * @param condition 条件
     * @return 记录列表
     */
    RecordConditionList listRecordTag(ConditionDTO condition);

    /**
     * 查看标签下的题目
     *
     * @param condition 条件
     * @return 题目列表
     */
    QuizConditionList listQuizTag(ConditionDTO condition);

    /**
     * 覆盖标签生成
     *
     * @param tagNameList 标签名列表
     */
    List<Integer> getCoverTag(List<String> tagNameList);
}